﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace testcecil
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }

    public class MainCase
    {
        public int roperty 
        {
            get { return 0; }
            set { ; }
        }
        public void PublicMethod()
        {
            Console.WriteLine("Hello");
            PrivateMethod(0);

            new SecondCase().Help("Help me");
        }

        public void AddMethod()
        {
            new ChildSecondCase().Help("Help me");
            var r = new ChildSecondCase();
            r.Help("");
            r.OverridedFunc();
        }

        private void PrivateMethod(int i)
        {
            var lst = new List<int>() { 1 }; 
            
            lst.Sum();
        }

        private void PrivateMethod(string i)
        {
            var lst = new List<int>() { 1 };

            lst.Sum();
        }

        public void Test()
        {
            var t = new ChildSecondCase();
            MethodWithArgument(t);
        }

        private void MethodWithArgument(SecondCase obj)
        {
            obj.OverridedFunc();
        }
    }

   
    class SecondCase
    {
        public SecondCase()
        {
            Console.Beep();
        }

        public void Help(string message)
        {
            Console.WriteLine(message);
        }

        public virtual void OverridedFunc()
        {
            Console.SetIn(null);
        }
    }

    class ChildSecondCase:SecondCase
    {
        public override void OverridedFunc()
        {
            Console.SetOut(null);
        }
    }

    interface IInterface
    {
        void InterfaceMethod();
    }
}
